﻿using Common.Contract.Customer.Request;
using Common.Contract.Customer.Response;
using Common.Contract.DataCenter.Request;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace Common.Contract.DataCenter
{
    [ServiceContract]
    public interface IDataCenter
    {
        #region DataCenter service - Synchronize Customer data
        [OperationContract]
        ResponseRecord SynchronizeRegion(SynchronizeRegionRequest request);

        [OperationContract]
        ResponseRecord SynchronizeProvince(SynchronizeProvinceRequest request);

        [OperationContract]
        ResponseRecord SynchronizeDistrict(SynchronizeDistrictRequest request);

        [OperationContract]
        ResponseRecord SynchronizeShop(SynchronizeShopRequest request);

        [OperationContract]
        ResponseRecord SynchronizeShopCell(SynchronizeShopCellRequest request);

        [OperationContract]
        ResponseRecord SynchronizeModel(SynchronizeModelCatRequest request);

        [OperationContract]
        ResponseRecord SynchronizeBillingInfo(SynchronizeBillingInfoRequest request);

        [OperationContract]
        ResponseRecord SynchronizeShopBillto(SynchronizeShopBilltoRequest request);

        [OperationContract]
        ResponseRecord SynchronizeMRP(SynchronizeMrpRequest request);
        #endregion


        #region DataCenter service - Synchronize Sellout data
        [OperationContract]
        ResponseRecord SynchronizeCdcHistory(SynchronizeCdcHistoryRequest request);

        [OperationContract]
        ResponseRecord SynchronizePndHistory(SynchronizePndHistoryRequest request);

        [OperationContract]
        ResponseRecord SynchronizeRdcHistory(SynchronizeRdcHistoryRequest request);

        [OperationContract]
        ResponseRecord SynchronizeOrder(SynchronizeOrderRequest request);
        #endregion


        #region DataCenter service - Synchronize Warranty data
        [OperationContract]
        ResponseRecord SynchronizeWarrantyHistory(SynchronizeWarrantyHistoryRequest request);

        [OperationContract]
        ResponseRecord SynchronizeWarrantyMaster(SynchronizeWarrantyMasterRequest request);

        [OperationContract]
        ResponseRecord SynchronizeWarrantyMessage(SynchronizeWarrantyMessageRequest request);

        [OperationContract]
        ResponseRecord SynchronizeResponseSMS(SynchronizeResponseSMSRequest request);
        #endregion


        #region DataCenter service - Synchronize Configuration Data
        [OperationContract]
        ResponseRecord SynchronizeApplicationError(SynchronizeApplicationErrorRequest request);
        #endregion
    }
}

